package com.munichosica.myapp.controller.Categoria;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.munichosica.myapp.dto.Categoria;
import com.munichosica.myapp.dto.Usuario;
import com.munichosica.myapp.exceptions.CategoriaDaoException;
import com.munichosica.myapp.factory.CategoriaDaoFactory;

@Controller
@RequestMapping("/Categorias")
public class CategoriaController {
	
	Logger logger=Logger.getLogger(CategoriaController.class);
	
	@RequestMapping(value="Listar.htm", method=RequestMethod.POST)
	public @ResponseBody List<Categoria> listar(@RequestParam("criterio") String criterio,
			@RequestParam("texto") String texto, @RequestParam("estado") String estado){
		logger.info("Ingreso a Categoriaes/Listar.htm");
		List<Categoria> list=null;
		try {
			list=CategoriaDaoFactory.create().listarPorCriterio(criterio, texto, estado);
		} catch (CategoriaDaoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}
	
	@RequestMapping(value="Procesar.htm",method=RequestMethod.POST)
	public @ResponseBody String procesar(HttpServletRequest request,Categoria categoria) {
		HttpSession session=request.getSession(true);
		logger.info("Ingreso a CAtegoria/insertar.htm");
		Usuario usuario=(Usuario) session.getAttribute("USUARIO");		
		categoria.setCatusuarioregistraV(usuario.getUsuusuarioV());
		
		System.out.println("ingreso a registrar"+categoria.getCatcodigoI());
		
		try {
		if(categoria.getCatcodigoI()<1){
			
			
				CategoriaDaoFactory.create().insertar(categoria);
		}else{			
			CategoriaDaoFactory.create().modificar(categoria);
		}
		} catch (CategoriaDaoException e) {
			logger.error(e.getMessage(),e);
		}
		return String.valueOf(categoria.getCatcodigoI());
	}
	
	@RequestMapping(value="codigoBarra.htm", method=RequestMethod.GET)
	public @ResponseBody String obtenerCodigoBarra(@RequestParam("codigo") int codigo){
		try {
			return CategoriaDaoFactory.create().codigoBarra(codigo);
		} catch (CategoriaDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return null;
	}
	
	@RequestMapping(value="Obtener.htm",method=RequestMethod.GET)
	public @ResponseBody Categoria obtener(@RequestParam("codigo") int codigo){
		Categoria categoria=null;
		try {
			categoria=CategoriaDaoFactory.create().obtener(codigo);
		} catch (CategoriaDaoException e) {			
			logger.error(e.getMessage(),e);
		}
		
		return categoria;
		
	}
}
